# -*- coding: utf-8 -*-

# 1. 数字类型（Numbers）
# 1.1 整数（int）：无小数部分的数字，可正可负
integer_num = 42  # 正整数
negative_int = -10  # 负整数
big_int = 12345678901234567890  # 大整数（Python支持任意精度）

# 1.2 浮点数（float）：带小数部分的数字
float_num = 3.14159  # 普通浮点数
scientific_float = 2.5e3  # 科学计数法（等价于2500.0）

# 1.3 复数（complex）：由实部和虚部组成，虚部以j或J结尾
complex_num1 = 3 + 4j
complex_num2 = 5j  # 纯虚数
complex_num3 = complex(2, -6)  # 用complex()函数定义


# 2. 组合数据类型
# 2.1 列表（list）：有序、可变的元素集合，元素类型可不同
fruit_list = ["apple", "banana", "cherry"]  # 字符串列表
mixed_list = [10, "hello", 3.14, True]  # 混合类型列表

# 2.2 元组（tuple）：有序、不可变的元素集合，元素类型可不同
point_tuple = (3, 4)  # 表示坐标点（不可修改）
single_tuple = (5,)  # 单个元素的元组（必须加逗号）

# 2.3 字典（dict）：键值对集合，无序（Python 3.7+后有序），键唯一
person_dict = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}  # 存储个人信息

# 2.4 集合（set）：无序、不重复的元素集合
unique_numbers = {1, 2, 3, 3, 4}  # 自动去重，实际存储{1,2,3,4}
empty_set = set()  # 定义空集合（不能用{}，{}是字典）


# 3. 其他基础数据类型
# 3.1 字符串（str）：文本数据，用单引号、双引号或三引号包裹
single_quote_str = 'Hello World'
double_quote_str = "Python编程"
multi_line_str = """这是一个
多行字符串"""

# 3.2 布尔值（bool）：表示真（True）或假（False）
is_true = True
is_false = False


# 演示数据类型的使用场景
def demonstrate_usage():
    print("===== 数字类型使用示例 =====")
    # 整数：计数
    print(f"苹果数量：{integer_num}个")
    # 浮点数：计算面积（圆面积=πr²）
    radius = 2.5
    area = float_num * (radius **2)
    print(f"半径为{radius}的圆面积：{area:.2f}")
    # 复数：数学计算
    print(f"复数{complex_num1}的共轭复数：{complex_num1.conjugate()}")

    print("\n===== 组合数据类型使用示例 =====")
    # 列表：动态存储多个元素（可修改）
    print("原始水果列表：", fruit_list)
    fruit_list.append("orange")  # 添加元素
    print("添加后的水果列表：", fruit_list)

    # 元组：存储不可修改的信息（如坐标）
    x, y = point_tuple  # 解包
    print(f"坐标点：x={x}, y={y}")

    # 字典：存储键值对信息（如用户资料）
    print(f"姓名：{person_dict['name']}，年龄：{person_dict['age']}")

    # 集合：去重或判断成员关系
    numbers = [1, 2, 2, 3, 4, 4, 5]
    unique_numbers = set(numbers)
    print(f"去重后的数字：{unique_numbers}")
    print(f"数字3是否在集合中：{3 in unique_numbers}")

    print("\n===== 其他类型使用示例 =====")
    # 字符串：文本处理
    print(f"字符串拼接：{single_quote_str} + {double_quote_str} = {single_quote_str + double_quote_str}")
    # 布尔值：条件判断
    print(f"10 > 5 是{10 > 5}")
    print(f"苹果数量是否大于50：{integer_num > 50}")


if __name__ == "__main__":
    # 打印各变量的类型
    print("===== 变量类型检测 =====")
    print(f"integer_num 的类型：{type(integer_num)}")
    print(f"float_num 的类型：{type(float_num)}")
    print(f"complex_num1 的类型：{type(complex_num1)}")
    print(f"fruit_list 的类型：{type(fruit_list)}")
    print(f"point_tuple 的类型：{type(point_tuple)}")
    print(f"person_dict 的类型：{type(person_dict)}")
    print(f"unique_numbers 的类型：{type(unique_numbers)}")
    print(f"single_quote_str 的类型：{type(single_quote_str)}")
    print(f"is_true 的类型：{type(is_true)}")
    
    # 演示使用场景
    demonstrate_usage()